const http = require('http');
const server = http.createServer();
server.listen(3000,()=>{
  console.log('服务器已启动');
});
const url = require('url');
const fs = require('fs');
const path = require('path');

server.on('request',(req,res)=>{
  const urlObj = url.parse(req.url,true);

  console.log(req.url);//请求的url地址
  console.log(req.method);//请求方式 get post
  console.log(req.headers);//请求头信息

  if(urlObj.pathname === '/index'){
    fs.readFile(path.join(__dirname,'view/index.html'),(err,data)=>{
      if(err){
        console.log(err);
        return res.end('404 not found');
      }
      res.end(data);
    })
  }else if(urlObj.pathname === '/data'){
    console.log(urlObj.query);
    res.end('/data-ok');
  }else if(urlObj.pathname ==='/postData'){
    let str = '';
    req.on('data',(chuck)=>{
      str += chuck;
    })
    req.on('end',()=>{
      console.log(str)
      res.end('/postdata-ok');
    })
    
  }else if(urlObj.pathname === '/aaa'){
    //设置响应头
    //服务器告诉浏览器，下面返回的数据需要使用解析html文档的方式来进行解析
    //解析这段响应数据时，字符集要使用utf-8
    res.setHeader('content-type','text/html;charset=utf-8');
    res.end('你好');
  }else if(urlObj.pathname === '/public/img/1.jpg'){
    console.log(urlObj.pathname)
    fs.readFile(path.join(__dirname,urlObj.pathname),(err,data)=>{
      //如果强行将内容类型改为text/html,则浏览器会以解析html文档的方式
      //来解析data返回的数据，页面则会乱码
      // res.setHeader('content-type','text/html;charset=utf-8');

      //因为服务器可以自动判断文件类型为jpg,响应给浏览器的数据也会自动解析
      //jpg文件的方式来进行解析
      //如果想人工干预，则设置image/jpeg
      res.setHeader('content-type','image/jpeg');
      if(err){
        console.log(err);
        return res.end('404');
      }
      res.end(data);
    })
  }else if(urlObj.pathname === '/ccc'){
    // setHeader用来设置响应头
    res.setHeader('content-type','text.html');
    res.setHeader('aaa','bbb');

    res.end('/ccc-ok');
  }else{
    //设置响应头信息和状态码
    //参数1：状态码
    //参数2：响应头信息,对象形式
    res.writeHeader(404,{
      'content-type':'image/jpeg',
      'ccc':'ddd',
    });

    //设置响应体
    res.write('404 not found');
    res.write('not');
    res.write('found');

    //end()方法 将响应行、响应头、响应体一次性返回给浏览器
    res.end('404 not found');
  }
})